The present invention relates generally to memory controllers, and in particular to a system and method for controlling address access requests to areas of memory in a computer system.
It is well known that computers use system memory, as well as other memory components within the computer system to process data. Current computer systems utilize PCI (Preferred Component Interconnect) based graphics adapters and AGP (Accelerated Graphics Port) based graphics adapters for displaying graphic information. In the absence of a three dimensional graphics display, the task of rendering 2D objects on the displays is a relatively simple one. Perspective defines how objects appear at various viewing positions. In a 2D environment, this typically amounts to a simple scaling of the objects"" dimensions to create the illusion of depth. Also fill patterns, such as texture maps, can also be adjusted based on viewing distance.
However, rendering a 3D graphics scene is very different than presenting a 2D picture of the same scene. Today most computers have high quality 3D display capability. For real time 3D rendering, computers divide up the processing required into successive graphics pipeline stages. Graphics pipeline is tied to memory arrays and high speed interfaces. The pipeline processing in the division of real time 3D graphics task requires that data be readily available to feed the pipeline stages.
A graphics processor memory controller can read and write all memory pools (that, is, areas of virtual memory) including video memories, AGP system aperature, system memory and other memories available via PCI. Virtual memory includes system memory and other memory devices that the memory controller uses as a unified address structure There are memory clients that during a graphics process may inadvertently, or accidentally, or even intentionally read from or write to memory locations which could have a negative effect on system behavior. This problem has arisen in modem day computer system architecture, when a memory client has access to all areas of the virtual memory. In today""s computers, this virtual memory runs from zero bytes to 4 gigabytes.
In an AGP system architecture, processors can read from or write into main memory. This allows the graphics device driver executing on the processor to access and manipulate graphic data stored in the main memory that will be used by the graphics adapter. The processor can read from and write into the AGP, PCI, integrated local memory and register set of the graphic adapter. This permits the graphics device driver executing on the processor to access and manipulate graphic data stored in a graphic adapter""s local memory, and to control the adapter by its register set. The graphics adapter can also read from and write into main memory, i.e., PCI, AGP. In order to perform read operations and write operations with PCI adapters that permit a transfer of video information to and from other devices, the PCI adapters also read from and write to main memory. Furthermore, PCI adapter can read information and write to a graphic adapter""s local memory. For example, a PCI based video capture device performs PCI write transactions to dump video information into the graphic adapter""s local memory for processing.
Different functionalities, which need to access different memory areas of the virtual memory of the memory controller are referred to as memory clients. Since one or more memory clients typically have access to all of the memory in the computer system, various prior art approaches have been used to prevent conflicts or other problems in system behavior. For example, it is known to structure the systems such that memory clients cannot access an entire memory pool. However, this restricts the functionality of the clients artificially and is a drawback for many computer systems. Also it is known in the prior art to have a system wherein the memory client has access granted to the memory pool before operations occur, and never after operations are completed. However, this requires an unnecessary amount of set up overhead per operation.
Thus, there is a need in the prior art for an improved system, which can handle memory accesses that are requested by the memory clients in a computer system.